<?php
/**
* Fichier de déclaration de la classe FrontController.
* 
* PHP version 5.1.6
*
* @package   package_name
* @author    Christophe Hebet <christophe.hebet@dgfip.finances.gouv.fr> 
* @copyright 2013 - DGFiP
*/

/**
 * Classe abstraite de controlleur frontal générique.
 * @author Christophe Hebet <christophe.hebet@dgfip.finances.gouv.fr>
 *
 */
abstract class SmartbokFrontController 
{   
    /**
     * Méthode unique nécessaire à l'exécution de controller.
     * La variable $appvar contient toutes les variable d'initialisation de l'application (cf config.inc.php)
     * La méthode instancie les objet Requete et Reponse avant de lancer la méthode d'exécution du controller.
     * @param array $appVar
     */    
    public static function executer($appVar) {
        $startTime = microtime();     
        $requete = new SmartbokRequete($appVar);
        $reponse = new SmartbokReponse($appVar);
        $display = SmartbokController::executer($requete, $reponse);
        
        echo $display;
        self::_afficherMesures($appVar['afficherMesures'], $startTime);
    }
    
    /**
     * operation repetable
     * controle de la session, gestion du menu
     */
    
    /**
     * méthode pour afficher la mémoire consommée et le temps d'exécution 
     */
    private static function _afficherMesures($afficher, $startTime) {
        if ($afficher === true) {
            $mtime = explode(" ",$startTime);
            $stime = $mtime[1] + $mtime[0];
            
            $mtime = microtime();
            $mtime = explode(" ",$mtime);
            $mtime = $mtime[1] + $mtime[0];
            $endtime = $mtime;
            $totaltime = round(($endtime - $stime),4);            
            
            echo '<div id="MesuresPerf"><p>Temps exécution : '.$totaltime.' s</p>';
            echo '<p>Mémoire consommée : '.self::convert(memory_get_usage()).'</p></div>';
        }
    }
    
    public static function convert($size)
    {
        $unit = array('b','kb','mb','gb','tb','pb');
        return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
    }
    
    private static function ajouterEncodageFormulaire($thml) {
        return $html;
    }
}